home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
EnigmA Amiga Run 1996 June
/
EnigmA AMIGA RUN 08 (1996)(G.R. Edizioni)(IT)[!][issue 1996-06][EARSAN CD VII].iso
/
earcd
/
arexx
/
dropme.lha
/
DropMe
/
DropMe.rexx
< prev
Wrap
OS/2 REXX Batch file
|
1996-05-12
|
12KB
|
400 lines
/*
$VER: DropMe.rexx V1.0 (12.5.96) © by Nils Görs
Dies ist ein Skript mit welchem man Aktionen automatisieren kann,
wie z.B. Archive entpacken, Bilder anzeigen, Musik abspielen etc.
*/
/* Informationen über das Ausgabefenster */
LeftBorder = 10 /*Abstand linker Rand */
TopBorder = 300 /*Abstand vom oberen Rand*/
OutPutWidth = 640 /*Breite des Fensters */
OutPutHeight = 150 /*Höhe des Fensters */
OPTIONS RESULTS
PARSE ARG PubScreen
IF PubScreen == "?" THEN DO
OPTIONS PROMPT "PUBSCREEN/K: "
PARSE PULL PubScreen
END
CALL _InitAll
/*
** Beschreibung der Applikation
*/
appname = 'DropMe'
applongname = 'DropMe - ©1996 by Nils Görs'
appinfo = 'Drop and enjoy...'
appversion = '1.0'
apprelease = '1'
appdate = '12.5.96'
_maintags:
windowtags = WindowID(1),
PubScreenName(PubScreen),
WindowBackfillFB,
WindowTitle(appname appversion),
BeginMenu('Projekt'),
MenuItem('W_PubScreen wechseln',10),
MenuItem('E_Einstellungen',13),
MenuItem('B_Beenden',11),
BeginMenu('Aktion'),
MenuItem('O_DropMeBase laden',12),
'HorizGroupA',
'Space',
'VertGroupA',
'Space',
Button("Bitte File(s) _auswählen",1),
'Space',
CenteredText("oder Icon(s) hier fallen lassen."),
DropBox(2),
'Space EndGroup Space EndGroup EndProject'
/*
** Unterbrechungssignale
*/
SIGNAL ON break_c
SIGNAL ON failure
SIGNAL ON halt
SIGNAL ON ioerr
SIGNAL ON syntax
app = TR_CREATEAPP('TRCA_Name' '"'appname'"',
'TRCA_LongName' '"'applongname'"',
'TRCA_Info' '"'appinfo'"',
'TRCA_Version' '"'appversion'"',
'TRCA_Release' '"'apprelease'"',
'TRCA_Date' '"'appdate'"',
'TAG_END')
IF app ~= '00000000'x THEN DO
window = TR_OPENPROJECT(app,windowtags)
WindowProject=C2D(window) /* zum Locken des Fensters bei About */
IF window ~= '00000000'x THEN DO
nummer = 0
DO WHILE nummer = 0
CALL TR_WAIT(app,'')
DO WHILE TR_HANDLEMSG(app,'event')
/******************
*** CLOSEGADGET ***
*******************/
IF event.trm_class = 'TRMS_CLOSEWINDOW' THEN nummer = -1
IF event.trm_class = 'TRMS_ICONDROPPED' THEN DO
SELECT
WHEN event.trm_id = 2 THEN DO
DO i = 1 TO event.trm_data.0
CALL _UseWhatIs event.trm_data.i
END
END
OTHERWISE
NOP
END
END
IF event.trm_class = 'TRMS_ACTION' THEN DO
SELECT
WHEN event.trm_id = 1 THEN CALL _OpenRequest
WHEN event.trm_id == 10 THEN CALL _NewPubScreen
WHEN event.trm_id == 11 THEN DO
Quit=TR_EasyRequest(app,"Wirklich beenden?",,
"Ja|Nein","TREZ_LockProject" WindowProject)
IF Quit == 1 THEN nummer=1
END
WHEN event.trm_id == 12 THEN CALL RXTR_READFILE(progdir||"/DropMe.base",DropMeBase)
WHEN event.trm_id == 13 THEN CALL _Einstellungen
OTHERWISE
NOP
END
END
/* */
END
END
CALL TR_CLOSEPROJECT(window)
END
CALL TR_DELETEAPP(app)
END
EXIT(0)
_OpenRequest:
bool = ASL_RequestFile(window,filename,,
"ASLFR_PubScreenName" PubScreen,
"ASLFR_InitialDrawer" Prefs.1,
"ASLFR_DoMultiSelect" 1,
"ASLFR_DoPatterns" 1,
"ASLFR_TitleText" '"Bitte Archive auswählen"')
IF bool == 0 THEN RETURN
DO i = 1 to filename.0
CALL _UseWhatIs filename.i
END
RETURN
_UseWhatIs:
PARSE ARG Dateiname
typ=RXTR_WHATIS(dateiname)
zeile = RXTR_LSEARCH(typ,DropMeBase,,,)
IF zeile = -1 THEN DO
CALL TR_EasyRequest(app,"der Filetyp:" Typ,
NL"wurde nicht gefunden.","OK", "TREZ_Activate" 1 "TREZ_Title" '"Achtung!"' "TREZ_LockProject" WindowProject)
RETURN
END
zeile = zeile+1
UseCommand=DropMeBase.zeile
/* Platzhalter, der mit dem Namen der temporären Datei gefüllt wird. */
Position = INDEX(UseCommand,'%f')
IF Position == 0 THEN DO
CALL TR_EasyRequest(app,"Sie haben keinen Platzhalter",
NL"für den Filenamen definiert:",
NL UseCommand,"OK", "TREZ_Activate" 1 "TREZ_Title" '"Achtung!"' "TREZ_LockProject" WindowProject)
RETURN
END
String = DELSTR(UseCommand,Position,2)
UseCommand = INSERT(DateiName,String,Position-1)
/* Platzhalter, der mit dem Namen des Zieldevices gefüllt wird. */
Position = INDEX(UseCommand,'%d')
IF Position ~= 0 THEN DO
String2 = DELSTR(UseCommand,Position,2)
UseCommand = INSERT(Prefs.2,String2,Position-1)
END
/* Platzhalter, der mit dem Namen des PublicScreens gefüllt wird. */
Position = INDEX(UseCommand,'%s')
IF Position ~= 0 THEN DO
String2 = DELSTR(UseCommand,Position,2)
UseCommand = INSERT(PubScreen,String2,Position-1)
END
CALL _OutPut
ADDRESS COMMAND UseCommand
IF (rc) ~= 0 THEN DO
say "...FEHLER bei" UseCommand
RETURN
END
CALL CLOSE('STDOUT')
CALL CLOSE('STDIN')
RETURN
/**********************************
*** Standard-Output umlenken ;) ***
***********************************/
_OutPut:
ScreenOutPut = 'CON:'LeftBorder'/'TopBorder'/'OutPutWidth'/'OutPutHeight'/'UseCommand'/SCREEN 'PubScreen'/AUTO/CLOSE'
CALL CLOSE('STDOUT')
IF ~OPEN('STDOUT',ScreenOutPut,'W') THEN
EXIT(10)
CALL CLOSE('STDIN')
CALL OPEN('STDIN','*','W')
CALL PRAGMA('*','STDOUT')
CALL PRAGMA('*','STDIN')
RETURN
_InitAll:
NL = '0a'x
TRUE = 1
FALSE = 0
Files.0 = 0
/*
** Open libs
*/
IF ~SHOW('LIBRARIES','tritonrexx.library') THEN
IF ~ADDLIB('tritonrexx.library',10,-30,0) THEN
quit('Cannot open tritonrexx.library!',10)
IF ~SHOW(LIBRARIES,'rexxtricks.library') THEN
IF ~ADDLIB('rexxtricks.library',9,-30,38) THEN
quit('Cannot open rexxtricks.library!',10)
IF ~SHOW('LIBRARIES','rexxsupport.library') THEN
IF ~ADDLIB('rexxsupport.library',9,-30,0) THEN
quit('Cannot open rexxsupport.library!',10)
/*
** Set current dir
*/
PARSE SOURCE . . . script .
progdir = PATHPART(script)
booll = LENGTH(progdir)
booli= LASTPOS(":",progdir)
boolh= LASTPOS("/",progdir)
IF booli <= booll THEN progdir2=progdir||"/"
IF boolh == 0 THEN progdir2=progdir||"/"
CALL PRAGMA('D',progdir)
/* Gibt es einen Parameter für den Bildschirm. Wenn nicht, dann wird
der Screen auf dem defaultPubScreen geöffnet. */
IF PubScreen == "" THEN
PubScreen = RXTR_GETDEFAULTPUBSCREEN()
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
IF RXTR_READFILE(progdir||"/DropMe.prefs",Prefs) == 0 THEN DO
Prefs.0 = 2
Prefs.1 = "Ram:" /* Archive Path */
Prefs.2 = "Ram:" /* OutPutPath */
END
IF RXTR_READFILE(progdir||"/DropMe.base",DropMeBase) == 0 THEN DO
say "Konnte" progdir||"/DopeMe.base nicht finden!"
EXIT(5)
END
RETURN
/*******************************************************************
*** Routine, die das GUI auf einem neuen PubScreen öffnen läßt ***
*******************************************************************/
_NewPubScreen:
IF PUBSCREENLIST('ScreenList') == 0 THEN RETURN
delstart=LSEARCH(PubScreen,Screenlist)
IF delstart ~= -1 THEN RXTR_STEMREMOVE(ScreenList,delstart)
ScreenListTags = WindowID(2),
WindowBackfillFB,
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle('neuen PubScreen auswählen'),
WindowFlags('TRWF_NOCLOSEGADGET|TRWF_NOESCCLOSE'),
PubScreenName(Pubscreen),
'VertGroupA',
'Space',
'HorizGroupA',
'Space',
ListSel('screenlist',301,0),
'Space',
'EndGroup',
'Space',
'HorizSeparator',
'Space',
'HorizGroupA',
'Space',
ButtonRE('Abbrechen',302),
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
PubScreenProject = TR_OPENPROJECT(app,Screenlisttags)
IF PubScreenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event2')
IF event2.trm_class = 'TRMS_ACTION' THEN ende = 1 /* Cancel Gadget */
IF event2.trm_class = 'TRMS_NEWVALUE' THEN DO
nummer = TR_GETATTRIBUTE(PubScreenProject,301,'TRAT_Value')+1
PubScreen = ScreenList.nummer
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
CALL TR_CLOSEPROJECT(window)
CALL TR_DELETEAPP(app)
CALL RXTR_PUBSCREENTOFRONT(PubScreen)
fromNewPub=1
CALL _MainTags
END
END
END
ende = 0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(PubScreenProject)
END
RETURN
_Einstellungen:
EinstellungenTags = WindowID(3),
WindowBackfillFB,
WindowPosition('TRWP_MOUSEPOINTER'),
WindowTitle('Einstellungen'),
PubScreenName(Pubscreen),
'HorizGroupA',
'Space',
'VertGroupA',
'Space',
Text3('Pfad der _Programme.') 'TRAT_ID 1',
StringGadget(Prefs.1,1),
'Space',
Text3('Pfad des _Zielverzeichnisses.') 'TRAT_ID 2',
StringGadget(Prefs.2,2),
'Space',
'BeginLine',
Button('_Speichern',3),
Button('_Benutzen',4),
'EndLine',
'Space',
'EndGroup Space EndGroup EndGroup EndProject'
EinstellungenProject = TR_OPENPROJECT(app,EinstellungenTags)
IF EinstellungenProject ~= '00000000'x THEN DO
CALL TR_LOCKPROJECT(window)
DO WHILE ende ~= 1
DO WHILE TR_HANDLEMSG(app,'event3')
IF event3.trm_class = 'TRMS_CLOSEWINDOW' THEN ende = 1
IF event3.trm_class = 'TRMS_ACTION' THEN DO
IF event3.trm_id = 3 THEN DO
Prefs.1 = TR_GetAttribute(Einstellungenproject,1,TROB_String)
Prefs.2 = TR_GetAttribute(Einstellungenproject,2,TROB_String)
CALL RXTR_WRITEFILE(progdir||"/DropMe.prefs",Prefs)
ende = 1
END
IF event3.trm_id = 4 THEN DO
Prefs.1 = TR_GetAttribute(Einstellungenproject,1,TROB_String)
Prefs.2 = TR_GetAttribute(Einstellungenproject,2,TROB_String)
ende = 1
END
END
END
END
ende = 0
CALL TR_UNLOCKPROJECT(window)
CALL TR_CLOSEPROJECT(EinstellungenProject)
END
RETURN
/*******************************************************************************
** Routine, die bei einer Unterbrechung des Scripts aufgerufen wird
*******************************************************************************/
break_c:
failure:
halt:
ioerr:
syntax:
SAY '+++ Fehler' rc 'in Zeile' sigl '-' ERRORTEXT(rc)
SAY SOURCELINE(sigl)
IF app ~= '00000000'x THEN
CALL TR_DELETEAPP(app)
EXIT(10)
/*EOS*/